/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package telas;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.JFrame;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import controladoras.apresentacao.CntrIntVoo;
import controladoras.apresentacao.modelos.ModeloTabelaConsultaVoo;
import javax.swing.JTable;
import java.awt.GridLayout;
import javax.swing.GroupLayout;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
/**
 *
 * @author thiagostuckert
 */
public class TelaConsultaVoo  extends javax.swing.JFrame {
    /**
     * Referencia para o objeto da tela.
     */
    private static TelaConsultaVoo ref;
    /**
     * Instancia o objeto da tela caso n esteja insntanciado.
     * @return TelaConsultaVoo objeto para a tela.
     */
    public static TelaConsultaVoo instanciar() {
        if (ref == null) {
            ref = new TelaConsultaVoo();
        }
        return ref;
    }
    /**
     * Controladora de interacao funcionario.
     */
    private CntrIntVoo cntrIntVoo;
    /**
     * Botao cadastrar da tela.
     */
    private JButton botaoConsultar = new JButton();
    /**
     * Botao sair da tela.
     */
    private JButton botaoSair = new JButton();
    /**
     * Campo matricula da tela.
     */
    private JTextField campoCidadeOrigem = new JTextField();
    /**
     * Campo nome da tela.
     */
    private JTextField campoCidadeDestino = new JTextField();
    /**
     * Campo telefone da tela.
     */
    private JTextField campoData = new JTextField();
    /**
     * Painel da tela.
     */
    private JPanel painel = new JPanel();
    /**
     * Frame da tela.
     */
    private JFrame frame = new JFrame("Consulta Voo");
    /**
     * Tabela que apresentara as constulas dos voos.
     */
    private JTable tabelaVoo = new JTable(ModeloTabelaConsultaVoo.instanciar());
    /**
     * Explicacao do campo Cidade Origem.
     */
    private JLabel explicacaoCidadeOrigem = new JLabel("Cidade de origem:");
    /**
     * Explicacao do campo Cidade Destino.
     */
    private JLabel explicacaoCidadeDestino = new JLabel("Cidade de destino:");
    /**
     * Explicacao data.
     */
    private JLabel explicacaoData = new JLabel("Data (DD:MM:AA):");

    /**
     * Set a visibilidade do frame.
     * @param visible visibilidade do frame.
     */
    public final void setFrameVisible(final boolean visible) {
        frame.setVisible(visible);
    }

    /**
     * Seta a controladora de interação da tela.
     * @param cntr controladora de interação da tela.
     */
    public final void setControladoraInteracao(final CntrIntVoo cntr) {
        cntrIntVoo = cntr;
    }
    /**
     * Construtor da tela.
     */
    public TelaConsultaVoo() {
        mostrarTela();
    }
    /**
     * Inicializa os componentens da tela.
     */
    public final void mostrarTela() {

        botaoConsultar.setText("Consultar");
        botaoSair.setText("Fechar");
        campoCidadeOrigem.setText("Brasilia");
        campoCidadeDestino.setText("Porto Alegre");
        campoData.setText("01:12:11");

        frame.setSize(1100, 200);

        JPanel esquerda = new JPanel();
        esquerda.setLayout(new GridLayout(5, 2, 0, 1));

        explicacaoCidadeOrigem.setSize(4, 4);
        explicacaoCidadeDestino.setSize(4, 4);
        explicacaoData.setSize(4, 4);

        esquerda.add(explicacaoCidadeOrigem);
        esquerda.add(explicacaoCidadeDestino);
        esquerda.add(explicacaoData);

        JPanel centro = new JPanel();
        GroupLayout layoutPainelCentro = new GroupLayout(centro);
        centro.setLayout(layoutPainelCentro);

        campoCidadeOrigem.setSize(4, 4);
        campoCidadeDestino.setSize(4, 4);
        campoData.setSize(4, 4);
        botaoConsultar.setSize(4, 4);
        botaoSair.setSize(4, 4);

        centro.add(campoCidadeOrigem);
        centro.add(campoCidadeDestino);
        centro.add(campoData);
        centro.add(botaoConsultar);
        centro.add(botaoSair);

        layoutPainelCentro.setHorizontalGroup(
         layoutPainelCentro.createParallelGroup()
           .addComponent(campoCidadeOrigem)
           .addComponent(campoCidadeDestino)
           .addComponent(campoData)
           .addComponent(botaoConsultar)
           .addComponent(botaoSair)
           );

        layoutPainelCentro.setVerticalGroup(
                layoutPainelCentro.createSequentialGroup()
                .addComponent(campoCidadeOrigem)
                .addComponent(campoCidadeDestino)
                .addComponent(campoData)
                .addComponent(botaoConsultar)
                .addComponent(botaoSair)
        );

        GroupLayout layoutPainelGeral = new GroupLayout(painel);
        painel.setLayout(layoutPainelGeral);

        painel.add(esquerda);
        painel.add(centro);



        JScrollPane panelTabela = new JScrollPane();

        panelTabela.setViewportView(tabelaVoo);

        painel.add(panelTabela);

        layoutPainelGeral.setHorizontalGroup(
         layoutPainelGeral.createSequentialGroup()
           .addComponent(esquerda)
           .addComponent(centro)
           .addComponent(panelTabela)
           );

        layoutPainelGeral.setVerticalGroup(
                layoutPainelGeral.createParallelGroup()
                .addComponent(esquerda)
                .addComponent(centro)
                .addComponent(panelTabela)
        );

        botaoConsultar.addActionListener(new ActionListener() {
            public void actionPerformed(final ActionEvent evt) {
                botaoConsultar(evt);
            }
        });

        botaoSair.addActionListener(new ActionListener() {
            public void actionPerformed(final ActionEvent evt) {
                botaoFechar(evt);
            }
        });

        frame.getContentPane().add(painel);
    }
    /**
     * Trata o evento de clique do botão cadastrar.
     * @param event evento gerado pelo clique do botão cadastrar.
     */
    private void botaoConsultar(final ActionEvent event) {
        cntrIntVoo.selVoo(campoCidadeOrigem.getText(),
                campoCidadeDestino.getText(), campoData.getText());
    }
    /**
     * Trata o evento do clique do botão fechar.
     * @param event evento gerado pelo clique do botão fechar.
     */
    private void botaoFechar(final ActionEvent event) {
        frame.setVisible(false);
    }
}
